|| (mpf->mpf_specification == 4)) ) {
smp_found_config = 1;
+#ifndef CONFIG_XEN
printk(KERN_INFO "found SMP MP-table at %08lx\n",
virt_to_phys(mpf));
+ reserve_bootmem(virt_to_phys(mpf), PAGE_SIZE);
if (mpf->mpf_physptr) {
/*
* We cannot access to MPC table to compute
size = end - mpf->mpf_physptr;
reserve_bootmem(mpf->mpf_physptr, size);
}
+#else
+ printk(KERN_INFO "found SMP MP-table at %08lx\n",
+ ((unsigned long)bp - (unsigned long)isa_bus_to_virt(base)) + base);
+#endif
mpf_found = mpf;
return 1;
* MP1.4 SPEC states to only scan first 1K of 4K EBDA.
*/
+#ifndef CONFIG_XEN
address = get_bios_ebda();
if (address)
smp_scan_config(address, 0x400);
+#endif
}
/* --------------------------------------------------------------------------
}
}
+#ifndef CONFIG_XEN
/*
* workaround for Dell systems that neglect to reserve EBDA
*/
if (addr)
reserve_bootmem(addr, PAGE_SIZE);
}
+#endif
#ifndef CONFIG_DISCONTIGMEM
void __init setup_bootmem_allocator(void);
reserve_bootmem(HIGH_MEMORY, (PFN_PHYS(min_low_pfn) +
bootmap_size + PAGE_SIZE-1) - (HIGH_MEMORY));
+#ifndef CONFIG_XEN
+ /*
+ * reserve physical page 0 - it's a special BIOS page on many boxes,
+ * enabling clean reboots, SMP operation, laptop functions.
+ */
+ reserve_bootmem(0, PAGE_SIZE);
+
/* reserve EBDA region, it's a 4K region */
reserve_ebda_region();
*/
acpi_reserve_bootmem();
#endif
+#endif /* !CONFIG_XEN */
#ifdef CONFIG_BLK_DEV_INITRD
if (xen_start_info.mod_start) {